package com.itheima.dao;

import com.itheima.pojo.OrderSetting;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 预约设置 持久层接口
 */
public interface OrderSettingDao {

    /**
     * 新增
     *
     * @param orderSetting 预约设置
     */
    @Insert(" insert into t_ordersetting values(null,#{orderDate},#{number},#{reservations}) ")
    void add(OrderSetting orderSetting);

    /**
     * 根据预约日期查询
     *
     * @param orderDate 预约日期
     * @return 预约次数
     */
    @Select("select count(id) from t_ordersetting where orderDate=#{orderDate} ")
    long findCountByOrderDate(Date orderDate);

    /**
     * 根据日期更新预约人数
     *
     * @param orderSetting 预约设置
     */
    @Update("update t_ordersetting set number=#{number} where orderDate=#{orderDate} ")
    void editNumberByOrderDate(OrderSetting orderSetting);

    /**
     * 查询起始日期 - 截止日期 的 每天日期  可预约人数  已预约人数
     *
     * @param map 起始日期 - 截止日期
     * @return 每天日期  可预约人数  已预约人数
     */
    @Select("select EXTRACT(day from orderDate ) `date`, number, reservations " +
            "from t_ordersetting where orderDate between #{dateBegin} and #{dateEnd} ")
    List<Map> getOrderSettingByMonth(Map map);

    /**
     * 根据日期查询预约设置
     *
     * @param date 日期
     * @return 预约设置
     */
    @Select("select * from t_ordersetting where orderDate=#{date}")
    OrderSetting findByOrderDate(Date date);

    /**
     * 根据日期设置已预约人数
     *
     * @param orderSetting 预约设置
     */
    @Update("update t_ordersetting set reservations=#{reservations} where orderDate=#{orderDate}")
    void editReservationsByOrderDate(OrderSetting orderSetting);

}
